Data networks have existed for many years. A data network comprises a plurality of interconnected computing systems which are often referred to as nodes. The computing devices may be personal computers, servers, printers, or other systems capable of communicating with other nodes utilizing the communication protocols of the data network.
Early networks were typically used for file sharing and printer sharing amongst systems which operated proprietary systems. All systems were typically under the control of the same entity, and within a limited geographic locations. The Internet Protocol (IP) and related protocols such as the File Transfer Protocol (FTP), Hypertext Transport Protocol (HTTP), and other related IP networking protocols have revolutionized the use of data networks and enabled the transfer of data transactions across multiple networks controlled by multiple entities.
Today, assuming appropriate network connectivity and access permissions, an application running on any computer system coupled to an IP network can establish a TCP/IP connection or UDP/IP channel to an application running on any other computer system coupled to an IP network for the exchange information at the application layer.
In theory, an application could request data (or obtain data processing services) necessary for executing its processes from various applications running on any other computer systems coupled to the Internet. However, the problem with the theory is that the information transferred between the applications must be of a type and format recognized by the two applications. Or, stated another way, the data, context, and execution must be compatible with each system at the application level.
To improve the exchange of information between application level systems, independent of application level compatibility, over the Internet, a plethora of systems within the umbrella of web services have been developed. Web services are data processing services offered by a servicing application operating on a first system to other service-requesting applications which can communicate with the first system over the Internet. Typically, the service requesting application sends a Simple Object Access Protocol (SOAP) message, which includes an XML method call, to the servicing application at a specified Universal Resource Locator (URL) using the Hypertext Transport Protocol (HTTP). The servicing system receives the request, performs applicable processing, and returns a response if applicable.
A servicing application may make its web services available to potential requesting applications by publishing an Extensible Markup Language (XML) document that describes the web service and is compliant with the Web Services Description Language (WSDL) protocol. The description of the web service may include the name of the web service, the tasks that it performs, the URL to which the method requests may be sent, and the parameters required in a method request.
There exists at least two problems with traditional web service systems. First, traditional web service systems do not account for mobility of the service provider system. Certain web services, particularly those related to communication of data, can only be performed while the service provider system is communicatively coupled with required network systems. While mobility and varying network connections is not an issue for fixed service provider systems, mobile computing devices which roam amongst multiple local area and wide are wireless networks are continually changing their network connections. The service provider system may be incapable of performing certain services when required network connections are unavailable.
Secondly, the services provided by a web service provider system are limited to only those services performed by applications that have been loaded on the service provider system. Each web services application must be coded, compiled, and loaded on the network device that will perform the service. While these steps may be performed efficiently by use of pre-existing coding objects, efficient compilers, and known methods for distributing software across a network, the fact remains that an executable application capable of performing the web service must be loaded on a service provider device and the availability of the service must be published before remote systems can make a method request to the service. Although a device may have the hardware, lower level software components, and network connections (physical attributes) capable of operating an application for performing a certain web service, a remote device can not make a method call to such device until such time as the application has been loaded and the web service published.
What is needed is an improved network services system that provides for delegating data processing tasks between peer devices and, more particularly a system and method for delegating data processing tasks to a service provider system based on network connectivity behavior of requesting system and the service provider system and based on physical attributes of the service provider system.